<?php

require_once('ConexionBD.php');

class FuncionesGenerales{
	private static $funcionesGenerales;
        private $link;
        private $isOpen;
    

//--------------constructores-----------//
private function __construct(){  	//---definir los parametros
}

//-------------metodos de la clase-------//

public static function get(){   
	if(!isset(self::$funcionesGenerales))
	    self::$funcionesGenerales = new FuncionesGenerales();
return self::$funcionesGenerales;
}

public function verificarErrorUpload($error){	//  este metodo me permite conectarma a la base de datos
    //--- verifico los erroes de carga del archivo
    if ($error == 1){
        return "El archivo subido excede la directiva upload_max_filesize en php.ini.";
    }else if ($error == 2){
        return "El archivo subido excede la directiva MAX_FILE_SIZE que fue especificada en el formulario HTML.";
    }else if ($error == 3){
        return "El archivo subido fue sólo parcialmente cargado.";
    }else if ($error == 4){
        return "Ningún archivo fue subido.";
    }else if ($error == 5){
        return "Falta la carpeta temporal. Introducido en PHP 4.3.10 y PHP 5.0.3";
    }else if ($error == 6){
        return "No se pudo escribir el archivo en el disco. Introducido en PHP 5.1.0.";
    }else if ($error == 7){
        return "Una extensión de PHP detuvo la carga de archivos. PHP no proporciona una forma de determinar cual extensión causó la parada de la subida de archivos; el examen de la lista de extensiones cargadas con phpinfo() puede ayudar. Introducido en PHP 5.2.0.";
    }else if ($error == 8){
        return "El archivo subido excede la directiva upload_max_filesize en php.ini.";
    }
    return "";
} 

public function createSubDirAnioMesDia($uploadDir){	//  este metodo me permite conectarma a la base de datos
    /*
    $uploadDir= $uploadDir.date("Y")."/";
    if(!is_dir("../".$uploadDir)){
        if(!mkdir("../".$uploadDir)){
            return "No fue posible crear los subdirectorios en el servidor (Anio). Verifique los permisos de escritura";
        }    
    }
    $uploadDir= $uploadDir.date("m")."/";
    if(!is_dir("../".$uploadDir)){
        if(!mkdir("../".$uploadDir)){
            return "No fue posible crear los subdirectorios en el servidor (Mes). Verifique los permisos de escritura";
        }
    }    
    $uploadDir= $uploadDir.date("d")."/";
    if(!is_dir("../".$uploadDir)){
        if(!mkdir("../".$uploadDir)){
            return "No fue posible crear los subdirectorios en el servidor (Dia). Verifique los permisos de escritura";
        }
    }    
    $uploadDir= $uploadDir.$_SESSION["SESSION_codUsuario"]."/";
    if(!is_dir("../".$uploadDir)){
        if(!mkdir("../".$uploadDir)){
            return "No fue posible crear los subdirectorios en el servidor (Usuario). Verifique los permisos de escritura";
        }
    }     
    */
    return $uploadDir;    
} 

public function FilesToArray(&$file_post) {

    $file_array = array();
    $file_count = count($file_post['name']);
    $file_keys = array_keys($file_post);

    for ($i=0; $i<$file_count; $i++) {
        foreach ($file_keys as $key) {
            $file_array[$i][$key] = $file_post[$key][$i];
        }
    }
    return $file_array;
}

public function getParameterValue($ParameterName) {
    $consulta="select \"valor\" FROM \"SeguridadParametro\" WHERE \"codParametro\"='".$ParameterName."'";
    @$res= pg_query(ConexionBD::get()->conectarse(),$consulta);
    if(!$res) {
        echo json_encode(array("ERROR"=>str_replace("ERROR:","",pg_last_error(ConexionBD::get()->conectarse()))));
        exit();
    }
    while($row = pg_fetch_array($res)) {
        return $row["valor"];
    }
    return "";
}

public function getNumberOfPages($tableName,$registrosPorPagina,$whereSection){
    
    $consulta="select (select CAST(\"valor\" as INTEGER) FROM \"SeguridadParametro\" WHERE \"codParametro\"='NumDeRegistrosPorPaginaDefault') as \"registrosPorPagina\"";
    @$res= pg_query(ConexionBD::get()->conectarse(),$consulta);
    if(!$res) {
        return json_encode(array("ERROR"=>str_replace("ERROR:","",pg_last_error(ConexionBD::get()->conectarse()))));
    }
    while($row = pg_fetch_array($res)) {
        $registrosPorPagina=($registrosPorPagina==-1 ? $row["registrosPorPagina"] : $registrosPorPagina );
    }
    
    if($tableName==="OrdTrabajo" && strpos($whereSection, '"nombreMaeCliente1"') !== FALSE){
        $whereSection=str_replace('"nombreMaeCliente1"','t2."nombreMaeCliente"',$whereSection);
        $consulta="select round(((select count(t1.*) from \"OrdTrabajo\" t1 left join \"MaeCliente\" t2 ON t1.\"codMaeCliente1\"=t2.\"codMaeCliente\" ".$whereSection.")/CAST(".$registrosPorPagina." as DECIMAL))+0.49) as \"numPaginas\"";
    }else if($tableName==="OrdTrabajo" && strpos($whereSection, '"nombreMaeCliente2"') !== FALSE){
        $whereSection=str_replace('"nombreMaeCliente2"','t2."nombreMaeCliente"',$whereSection);
        $consulta="select round(((select count(t1.*) from \"OrdTrabajo\" t1 left join \"MaeCliente\" t2 ON t1.\"codMaeCliente2\"=t2.\"codMaeCliente\" ".$whereSection.")/CAST(".$registrosPorPagina." as DECIMAL))+0.49) as \"numPaginas\"";
    }else{
        $consulta="select round(((select count(*) from \"".$tableName."\" ".$whereSection.")/CAST(".$registrosPorPagina." as DECIMAL))+0.49) as \"numPaginas\"";
    }
    @$res= pg_query(ConexionBD::get()->conectarse(),$consulta);
    //--- veo si se presento algun error
    if(!$res) {
        return json_encode(array("ERROR"=>str_replace("ERROR:","",pg_last_error(ConexionBD::get()->conectarse()))));
    }
    ConexionBD::get()->desconectarse();        
    while($row = pg_fetch_array($res)) {
        return json_encode(
                array(
                     "numPaginas"=>$row["numPaginas"]
                    ,"registrosPorPagina"=>$registrosPorPagina
                )
             );
    }
    return json_encode(array("ERROR"=>"No se pudo calcular el numero de filas. Verifique"));
}

}
?>